﻿using Microsoft.Extensions.Configuration;
using System;
using System.Collections.Generic;
using System.Text;
using System.Timers;

namespace ConfigurationCustom
{
    /// <summary>
    /// 没有直接继承IConfigurationProvider，而是使用ConfigurationProvider这个抽象类，这个类继承了IConfigurationProvider
    /// </summary>
    class MyConfigurationProvider :ConfigurationProvider
    {
        //用一个线程来模拟配置发生变化，这里用了一个timer
        Timer timer;
        public MyConfigurationProvider()
        {
            timer = new Timer();
            timer.Elapsed += Timer_Elapsed;//它的执行动作是告诉我们重新加载配置
            timer.Interval = 3000;//每3秒钟执行一次
            timer.Start();
        }
        /// <summary>
        /// 重新加载配置
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Timer_Elapsed(object sender,ElapsedEventArgs e)
        {
            Load(true);
        }

        public override void Load()
        {
            Load(false);
        }

        void Load(bool reload)
        {
            //把最新时间填充到数据中去
            Data["lastTime"] = DateTime.Now.ToString();
            if (reload)
            {
                OnReload();
            }
        }
    }
}
